# 元组的定义与基本操作

vart = (1, 2, 3)
print(vart, type(vart))
# (1, 2, 3) <class 'tuple'>

vart = 1, 2, 3
print(vart)
# (1, 2, 3)

vart = (1,)
print(vart)
# (1, 2, 3)

# 如果元组只有一个数据，但不适用，就会被解析成这个数据的数据类型，而非元组类型
vart = (1)
print(vart, type(vart))
# 1 <class 'int'>

# 元组相关操作
vart = (1, 2, 3)
# len(t) 获取元组的长度
print(len(vart))
# 3

# 元组切片操作 与列表一致
# vart[satrt:[end[:step]]] start开始索引，end结束索引，step步进值
print(vart[1:])
# (2, 3)
print(vart[1:2])
# (2,)
print(vart[::2])
# (1, 3)
print(vart[::-1])
# (3, 2, 1)

# count(s) 统计一个元素在元组中出现的次数
vart = (1, 2, 3, 2, 2, 3)
print(vart.count(2))
# 3

# index(s[, start[, end]]) 获取一个元素在元组中的索引值,多个值，只会输出元素第一次出现的索引
print(vart.index(2))
# 1

# 元组的加法运算：组成新的元组，拼接两个元组
# 元组乘法运算：组成新的元组，重复元组
print(vart+('a', 'b'))
# (1, 2, 3, 2, 2, 3, 'a', 'b')
print(vart*2)
# (1, 2, 3, 2, 2, 3, 1, 2, 3, 2, 2, 3)

# 检测元素是否在元组中
print(3 in vart)
# True
print(4 not in vart)
# True

